package com.lengmomo.games.config;

import com.lengmomo.games.myutil.ShiroUtil;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

import javax.websocket.HandshakeResponse;
import javax.websocket.server.HandshakeRequest;
import javax.websocket.server.ServerEndpointConfig;
/**
 * @author: lengmomo
 * @create: 2021/8/26
 **/
@Configuration
public class WebSocketConfig extends ServerEndpointConfig.Configurator {//继承websocket的配置器可以使用更多的功能

    /**
     * 注入一个ServerEndpointExporter,该Bean会自动注册使用@ServerEndpoint注解申明的websocket endpoint
     */
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }

    /**
     * 这个方法暂时已知功能是将用户信息存放到websocket中 注意是重写的方法 需要继承ServerEndpointConfig.Configurator
     *
     * @param sec
     * @param request
     * @param response
     */
    @Override
    public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
        // 将用户信息存储到socket的配置里
        sec.getUserProperties().put("loginUser", ShiroUtil.getLoginUser());
        super.modifyHandshake(sec, request, response);
    }

}